﻿Imports ComponentFactory.Krypton.Toolkit
Imports System.Data.OleDb
Imports System.Runtime.InteropServices
Imports System.IO

Public Class ConsultaFornecedor
    Inherits KryptonForm
    Private conexao As OleDbConnection
    Private command As OleDbCommand
    Private ds As DataSet
    Private dv As DataView
    Private dataAdapter As OleDbDataAdapter
    Private cmdBuilder As OleDbCommandBuilder
    Private strTipoFiltro As String = "Nome like '%{0}%'"
    Private strQueryFornecedor As String = "SELECT codFornecedor AS Código " & _
                                            ", nomeFornecedor AS Fornecedor " & _
                                            ", cnpjFornecedor AS CNPJ " & _
                                            ", inscricaoestadualFornecedor AS Inscrição" & _
                                            ", cidadeFornecedor AS Cidade" & _
                                            ", enderecoFornecedor AS Endereço" & _
                                            ", numenderecoFornecedor as Número" & _
                                            ", complementoFornecedor AS Complemento" & _
                                            ", bairroFornecedor AS Bairro" & _
                                            ", tblTipoLogradouro.descricaotipoLogradouro as Logradouro" & _
                                            ", tblEstado.siglaEstado as Estado" & _
                                            ", cepFornecedor AS CEP " & _
                                            ", emailFornecedor AS Email" & _
                                            ", siteFornecedor AS Site" & _
                                            ", observacaoFornecedor AS Observacão" & _
                                            ", tblRamoAtividade.descricaoramoAtividade as Ramo" & _
                                            " FROM (((tblFornecedor LEFT JOIN tblTipoLogradouro ON tblTipoLogradouro.codtipoLogradouro = tblFornecedor.codtipoLogradouro) LEFT JOIN tblEstado ON tblEstado.codEstado = tblFornecedor.codEstado)LEFT JOIN tblRamoAtividade ON tblRamoAtividade.codramoAtividade = tblFornecedor.codramoAtividade)"
                                            
    Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        cbfiltro.SelectedIndex = 0
        conexao = FabricaDeConexoes.CriarConexao()
        carregarDatagridView()
    End Sub

    Private Sub carregarDatagridView()
        Dim command As New OleDbCommand(strQueryFornecedor, conexao)
        dataAdapter = New OleDbDataAdapter(command)
        ds = New DataSet()

        Try
            If (ds IsNot Nothing) Then

                dataAdapter.Fill(ds, "tblFornecedor")
                dv = New DataView(ds.Tables("tblFornecedor"), Nothing, "Código", DataViewRowState.CurrentRows)
                dtgfornecedor.DataSource = dv
                dtgfornecedor.Columns(0).Visible = False
            End If

        Catch ex As Exception
            Debug.WriteLine(ex)

        End Try
    End Sub

    Private Sub btnNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNovo.Click
        Try
            Dim frmcadfornecedor As New CadastroFornecedor
            frmcadfornecedor.ShowDialog()
        Catch ex As Exception
            Debug.WriteLine(ex)
        End Try
       
    End Sub

    Private Sub txtfiltrar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtfiltrar.TextChanged
        dv.RowFilter = String.Format(strTipoFiltro, txtfiltrar.Text)
    End Sub

    Private Sub cbfiltro_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbfiltro.SelectedIndexChanged
        txtfiltrar.Clear()
        txtfiltrar.Focus()
        Try
            Select Case (cbfiltro.SelectedItem.ToString())

                Case "Nome"
                    strTipoFiltro = "Fornecedor like '%{0}%'"
                Case "Ramo"
                    strTipoFiltro = "Ramo like '%{0}%'"
                Case Else
                    strTipoFiltro = Nothing
            End Select

        Catch ex As Exception
            Debug.WriteLine(ex)
        End Try
   
    End Sub

    Private Sub btnFechar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFechar.Click
        Me.Dispose()
    End Sub

    Private Sub btnEditar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditar.Click
        Try
            If (dtgfornecedor.CurrentRow IsNot Nothing) Then
                Dim frm As New CadastroFornecedor(dtgfornecedor.CurrentRow.Cells.Item(0).Value)
                frm.ShowDialog()
                Dim cmdBuilder As New OleDbCommandBuilder(dataAdapter)
                dataAdapter.Update(ds, "tblFornecedor")
                carregarDatagridView()

            Else
                KryptonMessageBox.Show("Não há nenhum registro selecionado para edição.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End If
        Catch ex As Exception
            Debug.WriteLine(ex)
        End Try
     
    End Sub

    Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click
        KryptonMessageBox.Show("Antes de excluir, verifique os dados do fornecedor.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
        btnImprimir.PerformClick()

        Dim resp = KryptonMessageBox.Show("Tem certeza que deseja excluir este cadastro?" & vbNewLine & "As alterações causadas pela exclusão são irreversíveis.", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If (resp = Windows.Forms.DialogResult.Yes) Then
            Dim queryFornecedor As String = "DELETE * FROM tblFornecedor WHERE tblFornecedor.codFornecedor = " & dtgfornecedor.CurrentRow.Cells(0).Value
            Dim queryProduto As String = "DELETE * FROM tblProduto WHERE tblProduto.codProduto = " & dtgfornecedor.CurrentRow.Cells(0).Value

            Try
                'Abre conexão e exclui os produtos
                command = New OleDbCommand(queryProduto, conexao)
                conexao.Open()
                command.ExecuteNonQuery()

                command.CommandText = queryFornecedor
                command.ExecuteNonQuery()

                'Faz a atualização do DataSet (esvazia e preenche novamente)
                cmdBuilder = New OleDbCommandBuilder(dataAdapter)
                ds.Tables("tblFornecedor").Clear()
                dataAdapter.Update(ds, "tblFornecedor")

                'Atualiza o DataGridView
                carregarDatagridView()
            Catch ex As OleDbException
                Debug.WriteLine("Erro: " & ex.Message)
            Finally
                command.Dispose()
                conexao.Close()
            End Try
        End If
        
    End Sub

    Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click
        Dim cod = dtgfornecedor.CurrentRow.Cells(0).Value
        Dim query = "SELECT tblFornecedor.*,tblEstado.descricaoEstado,tblRamoAtividade.descricaoramoAtividade FROM ((tblFornecedor INNER JOIN tblEstado ON tblEstado.codEstado = tblFornecedor.codEstado) INNER JOIN tblRamoAtividade ON tblRamoAtividade.codramoAtividade = tblFornecedor.codramoAtividade) WHERE tblFornecedor.codFornecedor = " & cod

        Dim ds As New DataSet()
        Dim da As New OleDbDataAdapter(query, conexao)
        da.Fill(ds, "tblFornecedor")
        da.SelectCommand.CommandText = "SELECT tblTelefoneFornecedor.* FROM tblTelefoneFornecedor WHERE codFornecedor = " & cod
        da.Fill(ds, "tblTelefoneFornecedor")

        For Each dr As DataRow In ds.Tables("tblTelefoneFornecedor").Rows
            Debug.WriteLine(dr.Item("numeroTelefoneFornecedor"))
        Next

        Dim doc As New CrystalDecisions.CrystalReports.Engine.ReportDocument()
        doc.Load(Config.DiretorioAplicacao & "/../../../Relatorio/relatorioIndivFornecedores.rpt", CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)
        doc.SetDataSource(ds)
        Dim frm As New VisualizadorAvancado()
        frm.setDocument(doc)
        frm.ShowDialog()
    End Sub
End Class